package es.udc.acs.banco.operations;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import es.udc.acs.database.Database;
import es.udc.acs.database.exception.ConexionInvalidaException;

public class DBUIBancoOperations {
	
	private DBUIBancoOperations() {}

	public static void verSaldoCuentas(String idBanco)
									   throws SQLException, 
						    				  ConexionInvalidaException {		
		
	    Connection conexion = Database.getInstancia().getConexion();

	    if (conexion!=null) {
	    
			PreparedStatement ps = 
					conexion.prepareStatement(
							"SELECT id_cbanco,saldo " 
							+"FROM cbanco " 
							+"WHERE id_banco = ? " 
							+"ORDER BY id_cbanco");
			
			ps.setString(1, idBanco);
			ResultSet rs = ps.executeQuery();	
			
			System.out.println("-------------------------------------------------");
			System.out.println("Saldo en cada cuenta del banco "+idBanco);
			System.out.println("-------------------------------------------------");
			while (rs.next()) {
	        	
	        	int cuenta = rs.getInt("id_cbanco");
	        	int saldo  = rs.getInt("saldo");
	            
	        	System.out.println("Cuenta "+cuenta+" con saldo "+saldo);
	        }       
	    } else {	    
	    	throw new ConexionInvalidaException();
	    }
	}

	public static void verMovimientosCuenta(String idBanco, 
			                                int cuenta)  
			                                throws ConexionInvalidaException, 
			                                       SQLException {
		
	    Connection conexion = Database.getInstancia().getConexion();

	    if (conexion!=null) {
	    	
			PreparedStatement ps = 
					conexion.prepareStatement(
							"SELECT id_movimiento,tipo_movimiento,signo,importe,fecha " 
							+"FROM movimiento " 
							+"WHERE id_banco = ? " 
							+"AND id_cbanco = ? " 
							+"ORDER BY id_movimiento");
			
			ps.setString(1, idBanco);
			ps.setInt(2, cuenta);
			ResultSet rs = ps.executeQuery();
			
			System.out.println("---------------------------------------------------");
			System.out.println("Movimientos en cuenta "+cuenta+" de banco "+idBanco);
			System.out.println("----------------------------------------------------");
			while (rs.next()) {
	            
	        	System.out.println("Movimiento:"+rs.getInt("id_movimiento")
	        			           +" tipo:"+rs.getInt("tipo_movimiento")
	        			           +" signo:"+rs.getString("signo")
	        			           +" importe:"+rs.getInt("importe")
	        			           +" fecha:"+rs.getDate("fecha").toString());
	        }	    	
	    } else {
	    	throw new ConexionInvalidaException();
	    }
	}
	
	
	public static void verCuentasTarjetas(String idBanco) 
			                              throws SQLException, 
			                                     ConexionInvalidaException {
		
		
		  Connection conexion = Database.getInstancia().getConexion();

		    if (conexion!=null) {
		    	
				PreparedStatement ps = 
						conexion.prepareStatement(
								"SELECT id_tarjeta,id_ctarjeta,id_cbanco " 
								+"FROM ctarjeta " 
								+"WHERE id_banco = ? " 
								+"ORDER BY id_tarjeta");
				
				ps.setString(1, idBanco);
				ResultSet rs = ps.executeQuery();	
				
				System.out.println("------------------------------------------------------");
				System.out.println("Cuentas asociadas a cada tarjeta del banco "+idBanco);
				System.out.println("-------------------------------------------------------");
				
				while (rs.next()) {
					
					int cbanco     = rs.getInt("id_cbanco");
					String scbanco = String.valueOf(cbanco);
					
					if (cbanco == 0) {
						scbanco = "-";
					}
			            
			        System.out.println("Tarjeta: "+rs.getInt("id_tarjeta")
			        		           +" Cuenta: "+rs.getInt("id_ctarjeta")
			        		           +" Cuenta banco asociada: "+scbanco);		        		
		        } 				
		    } else {
		    	 throw new ConexionInvalidaException();
		    }
	}
	
}
